package com.scorpio.baselibrary.utils;


import android.text.TextUtils;

import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MathUtil {
    public static final String NUMERIC = "1234567890";
    public static final String LETTER = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

    //判断手机号是否正确
    public static boolean isPhonetrue(String phone) {
        /*
        移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
        联通：130、131、132、152、155、156、185、186
        电信：133、153、180、189、（1349卫通）
        总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
        */
        String telRegex = "[1][345789]\\d{9}";//"[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(phone))
            return false;
        else {
            return phone.matches(telRegex);
        }
    }

    /**
     * 保留小数
     *
     * @param f     浮点数据
     * @param digit 保留位数，小于1 将默认等于1
     * @return
     */
    public static String fromDecima(float f, int digit) {
        if (digit < 1) digit = 1;
        StringBuilder sb = new StringBuilder();
        sb.append("#0.");
        for (int i = 0; i < digit; i++) {
            sb.append("0");
        }
        DecimalFormat df = new DecimalFormat(sb.toString());
        return df.format(f);
    }

    /**
     * 获取随机指定范围字符串
     *
     * @param strType 抽取字符
     * @param initStr 随机数前缀 不需要可为空
     * @param length  随机数长度
     * @return
     */
    public static String getRandLetter(String strType, String initStr, int length) {
        initStr = initStr == null ? "" : initStr;
        StringBuilder txSecret = new StringBuilder();
        txSecret.append(initStr);
        for (int i = 0; i < length; i++) {
            int r = (int) (Math.random() * strType.length());
            txSecret.append(strType.substring(r, r + 1));
        }
        return txSecret.toString();
    }

    /**
     * 获取随机数
     *
     * @param initStr 前置字符
     * @param length  随机数长度
     * @return
     */
    public static String getSum(String initStr, int length) {
        String sum = "";
        for (int i = 0; i < length; i++) {
            sum += "" + (int) (Math.random() * 10);
        }
        return (initStr == null ? "" : initStr) + sum;
    }

    //获取随机字符（包含数字和字母）
    public static String getRandLetter(String initStr, int length) {
        return getRandLetter(LETTER, initStr, length);
    }

    //获取随机字符（包含数字和字母）
    public static String getRandLetter(int length) {
        return getRandLetter(LETTER, "", length);
    }

    //是否數字 包括负数
    public static boolean isNumeric(String str) {
        Pattern pattern = Pattern.compile("^[0-9]+(.[0-9]+)?$");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches() || str.trim().equals("")) {
            return false;
        }
        return true;
    }

    //是否數字 包括负数
    public static boolean isNumerics(String... str) {
        for (int i = 0; i < str.length; i++) {
            if (!isNumeric(str[i])) return false;
        }
        return true;
    }
}
